home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1995-11-25 | 7.5 KB | 116 lines |
- (******************************************************************************)
- (* This MODULE is Public Domain. Copy me like a beast! *)
- (* Christian Ledermann *)
- (* Wölfelkofen 2 *)
- (* 84166 Adlkofen *)
- (******************************************************************************)
- (* *)
- (* Started: 20.12.92 03:54:30 *)
- (* Version: 20.01.94 04:12:54 *)
- (* *)
- (******************************************************************************)
- (* *)
- (* Diese Software ist ohne jede Garantie. Ich verspreche *)
- (* keinerlei Wartung und übernehme keine Verantwortung für Schäden die *)
- (* durch die Benutzung dieses Programmes entstehen. *)
- (* Jegliche Ersatzansprüche lehne ich ab. *)
- (* *)
- (******************************************************************************)
- DEFINITION MODULE WindowDialogue;
- FROM SYSTEM IMPORT ADDRESS;
-
- (*********************************************************************)
- (* Ein Artikel in ST-Computer 5/93 war die Anregeung für dieses MODUL*)
- (* Im Gegensatz zum Vorbild ist es allerdings flexibler und kann so *)
- (* einfacher in eigene Programme eingebunden werden. *)
- (*********************************************************************)
-
- PROCEDURE OpenWindowDial(TreePtr : ADDRESS; Title : ARRAY OF CHAR):INTEGER;
- (********* Erzeugen, Öffnen und Zeichnen eines Fensterdialogs ********)
- (* TreePtr : Adresse des Dialoges, zu ermitteln mit *)
- (* AES.ResourceGetAddr(0,NummerDerBox,DialogAdresse) *)
- (* Titel : Titelzeile des Fensters unter MultiTOS etc. am besten der *)
- (* Name des Programmes zu dem der Dialog gehört. *)
- (* Rückgabe : Nummer (AES-Handle) des Fensters. *)
- (* Greift intern auf CreateDialWindow,openDialWindow zurück *)
- (*********************************************************************)
-
- PROCEDURE DoWindowDial(ID, Window : INTEGER;TreePtr : ADDRESS; FirstObject :INTEGER):INTEGER;
- (********** nicht modale Dialog Box ausführen*************************)
- (* ID : ID des aufrufenden Programmes, dies ist der Rückgabewert von *)
- (* AppInitialize. *)
- (* Window : Nummer des Fensters, wird von OpenWindowDial bzw Create- *)
- (* DialWindow zurückgegeben. *)
- (* Wenn hier -1 übergeben wird d.h. es konnte kein Fenster erzeugt *)
- (* werden wir ein "normaler" modaler Move-Dialog ausgeführt. *)
- (* TreePtr : Adresse des Dialoges, zu ermitteln mit *)
- (* AES.ResourceGetAddr(0,NummerDerBox,DialogAdresse) *)
- (* NummerDerBox ist Vom RCS erzeugt worden und Steht in der .I -Datei*)
- (* FirstObject : Erstes Editierbares Object, dort steht dann der *)
- (* Cursor im Edit Feld, wenn kein EditObject vorhanden ist dann muß *)
- (* hier 0 übergeben werden. *)
- (* Rückgabe : Das Feld das zum Verlassen der Box angeklickt wurde. *)
- (* Wenn der Dialog aus anderen Gründen verlassen wurde zB. weil ein *)
- (* WindowEvent auftrat o.ä. wird 0 zurückgegeben. *)
- (* Achtung!!! Wenn das Dialog-Fenster verschoben wird muss ein Redraw*)
- (* erzwungen werden bevor die Dialogbox wieder aktiviert wird sonst *)
- (* erkennt das GEM nicht die geänderten Koordinaten d.h. es vermutet *)
- (* die Buttons und EditFelder an der Stelle an der sich der Dialog *)
- (* vorher befand -> Bildschirmmüll durch die Editfelder und *)
- (* Blindflug zum bedienen der Buttons. *)
- (* Der Dialog kann wie gewöhnlich im RCS erzeugt werden !!! *)
- (* Als Schmankerln sind hier noch ein paar Erweiterungen eingebaut *)
- (* 1.) Tastatursteuerung: wird Alt+Taste gedrückt so wird der Button *)
- (* im Dialogbaum ausgeführt der als letztes(!) diese Taste in Groß- *)
- (* buchstaben enthält. Dabei ist es gleichgültig ob der Buttontext *)
- (* noch andere Großbuchstaben enthält. OK reagiert also auf Alt-O *)
- (* und(!) auf Alt-K. *)
- (* 2.) Checkboxes: Ein Object vom Typ GBox das die Hintergrundfarbe *)
- (* schwarz hat und den Status crossed besitzt wird a) beim Aufruf *)
- (* von DoMoveDialog invertiert so das es nun eine weiße Box mit *)
- (* schwarzem Kreuz ist und b) wenn es im Dialog angeklickt wird mit *)
- (* dem Status Checked+Selected belegt -> weiße Box *)
- (* 3.) Wenn es kein DEFAULT-Object gibt wird mit ENTER bzw. RETURN *)
- (* der nächste editierbare Eintrag angesprungen. *)
- (*********************************************************************)
-
- PROCEDURE CloseWindowDial(VAR Window : INTEGER);
- (****** Fenster-Dialog schließen und Fenster freigeben (löschen)******)
- (* Window : AES-Fenster-Handle, wird als Rückgabe auf -1 gesetzt *)
- (* Greift intern auf CloseDialWindow,DeleteDialWindow zurück *)
- (*********************************************************************)
-
- PROCEDURE CreateDialWindow(TreePtr : ADDRESS; Title : ARRAY OF CHAR):INTEGER;
- (***********Erzeugt ein Dialog Fenster *******************************)
- (* TreePtr : Adresse des Dialoges, zu ermitteln mit *)
- (* AES.ResourceGetAddr(0,NummerDerBox,DialogAdresse) *)
- (* Titel : Titelzeile des Fensters unter MultiTOS etc. am besten der *)
- (* Name des Programmes zu dem der Dialog gehört. *)
- (* Rückgabe : Nummer (AES-Handle) des Fensters. *)
- (* Alle nötigen Strukturen für die verwaltung des Fensters werden *)
- (* erzeugt: Fenster, Redraw-PROCEDURE... *)
- (* Der Dialog wir mittels ObjectCenter in der Bildschirmmitte *)
- (* angeordnet. *)
- (*********************************************************************)
-
- PROCEDURE OpenDialWindow(Window : INTEGER):BOOLEAN;
- (****************** Öffnen des Dialog-Fensters.***********************)
- (* Window : AES-Fenster-Handle *)
- (* Rückgabe TRUE falls es erfolgreich geöffnet worden ist *)
- (* Das Fenster öffnet sich an der Stelle, wo es zuletzt war. *)
- (* Um den Dialog zu zeichnen muss hier noch ein Redraw erzwungen *)
- (* werden *)
- (*********************************************************************)
-
- PROCEDURE CloseDialWindow(Window : INTEGER);
- (*********** Schliessen des Dialog-Fensters***************************)
- (* Window : AES-Fenster-Handle *)
- (*********************************************************************)
-
- PROCEDURE DeleteDialWindow(VAR Window : INTEGER);
- (*************** Dialog-Fenster freigeben (löschen)*******************)
- (* Window : AES-Fenster-Handle, wird als Rückgabe auf -1 gesetzt *)
- (*********************************************************************)
-
- END WindowDialogue.
-